package einlesenUndDatenverwaltung;

import java.util.Comparator;

import ausgabeUndDatenverwaltung.PlatzKarte;

/**
 * Klasse zur Erzeugung von Kursobjekten mit Gettern und Settern fuer die
 * einzelnen Attribute.
 * 
 * @author (Daniel Uhlig / Max Bogner)
 * @version (17.1.2014)
 */
public class Kurs implements Comparable<Kurs> {
	// Attribute
	private int kursid;
	private String kurzname;
	private String name;
	private boolean bewerteteStudienleistung;
	private int AnzahlBuchungen;
	private static String sortierKriterium = "kursid";//"AnzahlBuchungen"

	/**
	 * Konstruktor zur Erzeugung von Kursobjekten.
	 */
	public Kurs() {

	}

	/**
	 * Methode zur Rueckgabe von Attribut Sortierkriterium.
	 * 
	 * @return sortierKriterium (String)
	 */
	public static String getSortierKriterium() {
		return sortierKriterium;
	}

	/**
	 * Methode zum Setzen des Attributs Sortierkriterium.
	 * @author Max Bogner
	 * @param sortierKriterium
	 *            (String) der zu setzende String Sortierkriterium
	 */
	public static void setSortierKriterium(String sortierKriterium) {
		sortierKriterium = sortierKriterium;
	}

	/**
	 * Methode welche das Attribut anzahlBuchungen zurueck gibt.
	 * 
	 * @return anzahlBuchungen (int) - das Attribut anzahlBuchungen
	 */
	public int getAnzahlBuchungen() {
		return AnzahlBuchungen;
	}

	/**
	 * Methode zum setzen des Attributs anzahlBuchungen.
	 * 
	 * @param anzahlBuchungen
	 *            (int)- zu setzendes Attribut anzahlBuchungen
	 */
	public void setAnzahlBuchungen(int anzahlBuchungen) {
		AnzahlBuchungen = anzahlBuchungen;
	}

	/**
	 * Methode zur Rueckgabe des Attributs Kursid.
	 * 
	 * @return (int)- das Attribut Kursid
	 */
	public int getKursid() {
		return kursid;
	}

	/**
	 * Methode zum Setzen des Attributs Kursid.
	 * 
	 * @param kursid
	 *            (int)- zu setzende Kursid
	 */
	public void setKursid(String kursid) {
		this.kursid = Integer.parseInt(kursid);
	}

	/**
	 * Methode zur Rueckgabe des Attributs Kurzname.
	 * 
	 * @return (String) - Attribut Kurzkurzname
	 */
	public String getKurzname() {
		return kurzname;
	}

	/**
	 * Methode zum Setzen des Attributs Kurzname.
	 * 
	 * @param kurzname
	 *            (String) - zu setzender Kurskurzname
	 */
	public void setKurzname(String kurzname) {
		this.kurzname = kurzname;
	}

	/**
	 * Methode zur Rueckgabe des Attributs Name.
	 * 
	 * @return (String) - Attribut Name
	 */
	public String getName() {
		return name;
	}

	/**
	 * Methode zum Setzen des Attributs Name.
	 * 
	 * @param name
	 *            (String) - der zu setzende Name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * Methode zur Rueckgabe des Attributs bewertete Studienleistung.
	 * 
	 * @return (boolean) - Attribut bewerteteStudienleistung (true=ja)
	 */
	public boolean isBewerteteStudienleistung() {
		return bewerteteStudienleistung;
	}

	/**
	 * Methode zum Setzen des Attributs bewerteteStudienleistung.
	 * 
	 * @param bewerteteStudienleistung
	 *            (boolean) die zu setzende Studienleistung
	 */
	public void setBewerteteStudienleistung(String bewerteteStudienleistung) {
		if ((bewerteteStudienleistung.equals("ja"))
				|| (bewerteteStudienleistung.equals("ja "))) {
			this.bewerteteStudienleistung = true;
		} else {
			this.bewerteteStudienleistung = false;
		}
	}

	/**
	 * Methode zum Sortieren von Kursobjekten.
	 * @author Max Bogner
	 */
	public int compareTo(Kurs k) {
		// TODO Auto-generated method stub
		int r = 0;
		if (sortierKriterium == "kursid") {
			r = kursid - k.kursid;
		} else if (sortierKriterium == "AnzahlBuchungen") {
			r = AnzahlBuchungen - k.AnzahlBuchungen;
		}
		return r;
	}

	/**
	 * Methode zum Sortieren nach aufsteigenden Kursids.
	 * @author Max Bogner
	 */
	public static Comparator<Kurs> KursIDsAbsteigend = new Comparator<Kurs>() {

		@Override
		public int compare(Kurs arg0, Kurs arg1) {
			// TODO Auto-generated method stub

			return arg1.kursid - arg0.kursid;// .getKursliste().getKursliste().size()-arg0.getKursliste().getKursliste().size();
		}
	};

	/**
	 * Methode zum Sortieren nach absteigenden Kursids.
	 * @author Max Bogner
	 */
	public static Comparator<Kurs> AnzahlBuchungenAbsteigend = new Comparator<Kurs>() {

		@Override
		public int compare(Kurs arg0, Kurs arg1) {
			// TODO Auto-generated method stub

			return arg1.AnzahlBuchungen - arg0.AnzahlBuchungen;// .getKursliste().getKursliste().size()-arg0.getKursliste().getKursliste().size();
		}
	};

	/**
	 * To String Methode fuer Kursobjekte.
	 * 
	 * @return String- der Ausgabestring
	 * 
	 */
	public String toString() {
		// TODO Auto-generated method stub
		// return super.toString();

		return "kursid: " + kursid + " kurzname: " + kurzname + " name: "
				+ name + " AnzahlBuchungen: " + AnzahlBuchungen
				+ " sortierKriterium: " + sortierKriterium;
	}

}